<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      function Parent() {
        this.chrldrens = ['zs', 'ls', 'ww']
      }
      Parent.prototype.sayHi = function () {
        console.log('Hi!')
      }
      function Child() {
        Parent.call(this)
      }
      Child.prototype.sayBye = function () {
        console.log('bye!')
      }

      Child.prototype = Object.create(Parent.prototype) // Object.create() 静态方法以一个现有对象作为原型，创建一个新对象。

      const child1 = new Child()
      const child2 = new Child()

      // console.log(child1.chrldrens)
      child2.chrldrens = [1, 2, 3]
      console.log(child1.chrldrens, child2.chrldrens) // 两个实例对象不相互影响

      child1.sayHi() // 实例对象可以拿到父构造函数的原型上的方法
      child1.sayBye() // 子构造函数的原型方法无法使用！！！！！！！！！

      // 总结：解决了组合继承的缺点（父构造函数的重复调用）但是子构造函数的原型方法被覆盖掉了，无法使用
      // 最后我们推荐使用寄生组合式的方法。
    </script>
  </body>
</html>
